package pr.vodafone.resources;

import java.net.URI;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;

import com.sun.jersey.api.NotFoundException;


import pr.vodafone.dao.dto.Cliente;
import pr.vodafone.dao.dto.Linea;
import pr.vodafone.service.ServiceProvider;

public class LineaResource {
	
	String dni;
	String numeroTelefono;
	
	
	public LineaResource (String dni, String numeroTelefono){
		ServiceProvider sp = new ServiceProvider();
		this.dni = dni;
		this.numeroTelefono = numeroTelefono;
		Linea linea = sp.obtenerLinea(dni, numeroTelefono);
		if (linea == null) throw new NotFoundException("Linea con el telefono "+numeroTelefono+" no existe para el cliente "+dni );
		
	}
	
	@GET
	@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
	public Linea getLinea() {
		ServiceProvider sp = new ServiceProvider();
		Linea linea = new Linea();
		linea = sp.obtenerLinea(dni, numeroTelefono);
		return linea;
	}
	
	@PUT
	@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
	public Response putLinea(@Context UriInfo uriInfo, Linea linea) {
		Response res;
		ServiceProvider sp = new ServiceProvider();
		Linea resultLinea = sp.obtenerLinea(dni, numeroTelefono);
		boolean result = false;
		
		if (resultLinea != null){
			
			result= sp.actualizarLinea(dni, numeroTelefono, linea);
			if (result){
				res = Response.noContent().build(); // Code: 204
			}
			else{
				res = Response.status(409).entity("Error al actualizar la linea "+linea.getTelefono()).build();
			}
			
		}else{
			res = Response.status(409).entity("Error al insertar la linea "+linea.getTelefono()).build();	
		}
		return res;
	}
	
	@DELETE
	public void deleteTodo() {
		ServiceProvider sp = new ServiceProvider();
		sp.borrarLinea(dni, numeroTelefono);
		
	}
		
	
//	@GET
//	@Path("{factura}")
//	@Produces(MediaType.TEXT_PLAIN)
//	public String summary(@PathParam("factura") String factura) {
//		
//		return new ClientesResource(dni,numeroTelefono,factura);
//	}
	
	//GORKA CREO QUE ES ASI SI LO QUE KIERES OBTENER ES LA FACTURA
	/*
	 * Lo que tenia antes estaba mal pero creo que lo que has puesto tu tambien esta mal, deveria ser 
	 * return new FacturasResoruce ...
	 * */
//	@GET
//	@Path("/facturas")
//	@Produces(MediaType.TEXT_PLAIN)
//	public FacturasResource summary() {
//		
//		return new FacturasResource(dni,numeroTelefono);
//	}


}
